{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Create a QComponent - Advanced"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit_metal import draw, Dict\n",
    "from qiskit_metal.toolbox_metal import math_and_overrides\n",
    "from qiskit_metal.qlibrary.core import QComponent\n",
    "import qiskit_metal as metal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "design = metal.designs.DesignPlanar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Qubits and Junctions\n",
    "\n",
    "The vast majority of junction management is actually under the QRenderers. The only information that a component designer needs to provide, is a linestring and width which indicates the location and orientation of a given junction. We can see this from a couple extracted lines of code from `TransmonPocket`\n",
    "\n",
    "`...`\n",
    "\n",
    "`rect_jj = draw.LineString([(0, -pad_gap / 2), (0, +pad_gap / 2)])`\n",
    "\n",
    "`...`\n",
    "\n",
    "`self.add_qgeometry('junction', dict(rect_jj=rect_jj), width=p.inductor_width)`\n",
    "\n",
    "\n",
    "In this case, the linestring is drawn between the two charge islands of the `TransmonPocket`. Much more of the junctions options are from renderer options added when the QRenderers are initiated. These are covered more in the renderer tutorials and sessions.\n",
    "\n",
    "It should be noted, currently multiple junctions in a component will receive the same renderer options. This is fine if, say, making a symmetric SQUID, though if trying to have asymmetry, (or, say fluxonium), a manner to handled multiple junction renderer options in a component is required."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit_metal.qlibrary.qubits.transmon_pocket import TransmonPocket\n",
    "?TransmonPocket"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exteriors, Interiors, and MultiPolygons\n",
    "\n",
    "As was shown in 3.1, there is a great amount of flexibility already present in Metal for what a component can be, though as it is still in development, there are some limitations with respect to if renderers can accurately render a given shape, say, a multi-faceted polygon where some facets are composed of splines. What capabilities are currently missing and would be beneficial to be added are all part of the development process.\n",
    "\n",
    "Currently, a poly can be generated with interior cut outs, such as the smiley face previously,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-1.08 -1.08 2.16 2.16\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,0.0)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.0432\" opacity=\"0.6\" d=\"M 1.0,0.0 L 0.9951847266721969,-0.0980171403295605 L 0.9807852804032305,-0.19509032201612808 L 0.9569403357322089,-0.2902846772544621 L 0.923879532511287,-0.3826834323650894 L 0.8819212643483553,-0.4713967368259972 L 0.8314696123025456,-0.5555702330196017 L 0.7730104533627374,-0.6343932841636449 L 0.7071067811865481,-0.7071067811865469 L 0.6343932841636462,-0.7730104533627363 L 0.5555702330196031,-0.8314696123025447 L 0.4713967368259986,-0.8819212643483545 L 0.38268343236509084,-0.9238795325112863 L 0.2902846772544636,-0.9569403357322085 L 0.19509032201612964,-0.9807852804032302 L 0.09801714032956209,-0.9951847266721967 L 1.6155445744325867e-15,-1.0 L -0.09801714032955888,-0.995184726672197 L -0.19509032201612647,-0.9807852804032308 L -0.2902846772544605,-0.9569403357322095 L -0.38268343236508784,-0.9238795325112875 L -0.4713967368259957,-0.881921264348356 L -0.5555702330196005,-0.8314696123025463 L -0.6343932841636439,-0.7730104533627382 L -0.7071067811865462,-0.7071067811865489 L -0.7730104533627359,-0.6343932841636468 L -0.8314696123025443,-0.5555702330196036 L -0.8819212643483543,-0.47139673682599903 L -0.9238795325112862,-0.3826834323650911 L -0.9569403357322085,-0.29028467725446366 L -0.9807852804032302,-0.19509032201612947 L -0.9951847266721968,-0.09801714032956171 L -1.0,-1.0106430996148606e-15 L -0.9951847266721969,0.0980171403295597 L -0.9807852804032307,0.1950903220161275 L -0.956940335732209,0.2902846772544617 L -0.923879532511287,0.3826834323650892 L -0.8819212643483553,0.47139673682599725 L -0.8314696123025455,0.555570233019602 L -0.7730104533627371,0.6343932841636453 L -0.7071067811865477,0.7071067811865475 L -0.6343932841636459,0.7730104533627367 L -0.555570233019603,0.8314696123025448 L -0.4713967368259987,0.8819212643483545 L -0.38268343236509117,0.9238795325112862 L -0.2902846772544641,0.9569403357322084 L -0.1950903220161304,0.98078528040323 L -0.0980171403295631,0.9951847266721966 L -2.848232278972479e-15,1.0 L 0.09801714032955743,0.9951847266721972 L 0.1950903220161248,0.9807852804032311 L 0.29028467725445867,0.9569403357322099 L 0.3826834323650859,0.9238795325112884 L 0.47139673682599365,0.8819212643483572 L 0.5555702330195982,0.8314696123025479 L 0.6343932841636415,0.7730104533627402 L 0.7071067811865436,0.7071067811865515 L 0.7730104533627332,0.63439328416365 L 0.8314696123025418,0.5555702330196074 L 0.8819212643483519,0.4713967368260034 L 0.9238795325112841,0.38268343236509617 L 0.9569403357322067,0.29028467725446927 L 0.980785280403229,0.1950903220161357 L 0.9951847266721962,0.09801714032956847 L 1.0,8.238535137130597e-15 L 1.0,0.0 z M 0.7413029668566793,-0.3 L -0.7413029668566793,-0.3 L -0.739103626009029,-0.3061467458920729 L -0.7055370114786834,-0.37711738946079926 L -0.6651756898420356,-0.4444561864156829 L -0.6184083626901887,-0.5075146273309175 L -0.565685424949237,-0.5656854249492391 L -0.5075146273309151,-0.6184083626901906 L -0.4444561864156804,-0.6651756898420371 L -0.3771173894607966,-0.7055370114786849 L -0.3061467458920703,-0.73910362600903 L -0.23222774180356842,-0.7655522685857676 L -0.1560722576129012,-0.7846282243225846 L -0.07841371226364711,-0.7961477813377577 L 1.2924356595460695e-15,-0.8 L 0.07841371226364968,-0.7961477813377574 L 0.15607225761290372,-0.7846282243225842 L 0.2322277418035709,-0.7655522685857669 L 0.3061467458920727,-0.7391036260090291 L 0.37711738946079887,-0.7055370114786836 L 0.44445618641568246,-0.6651756898420358 L 0.5075146273309169,-0.6184083626901891 L 0.5656854249492386,-0.5656854249492376 L 0.61840836269019,-0.507514627330916 L 0.6651756898420365,-0.4444561864156814 L 0.7055370114786843,-0.37711738946079776 L 0.7391036260090296,-0.3061467458920715 L 0.7413029668566793,-0.3 z M 0.6000000000000001,0.4 L 0.6000000000000001,0.4000000000000017 L 0.5990369453344393,0.4196034280659137 L 0.5961570560806458,0.43901806440322716 L 0.5913880671464413,0.4580569354508939 L 0.5847759065022569,0.4765366864730193 L 0.5763842528696704,0.49427934736520074 L 0.5662939224605084,0.5111140466039215 L 0.5546020906725466,0.52687865683273 L 0.5414213562373087,0.5414213562373104 L 0.5268786568327284,0.5546020906725481 L 0.5111140466039197,0.5662939224605096 L 0.49427934736519874,0.5763842528696714 L 0.4765366864730172,0.5847759065022577 L 0.45805693545089177,0.591388067146442 L 0.439018064403225,0.5961570560806463 L 0.4196034280659115,0.5990369453344395 L 0.39999999999999947,0.6000000000000001 L 0.3803965719340874,0.5990369453344393 L 0.36098193559677394,0.5961570560806461 L 0.34194306454910717,0.5913880671464418 L 0.32346331352698177,0.5847759065022573 L 0.3057206526348003,0.576384252869671 L 0.2888859533960794,0.566293922460509 L 0.2731213431672708,0.5546020906725474 L 0.25857864376269046,0.5414213562373096 L 0.2453979093274526,0.526878656832729 L 0.2337060775394909,0.5111140466039205 L 0.22361574713032895,0.49427934736519946 L 0.21522409349774263,0.4765366864730179 L 0.2086119328535582,0.4580569354508924 L 0.20384294391935387,0.43901806440322555 L 0.20096305466556064,0.41960342806591194 L 0.2,0.3999999999999998 L 0.20096305466556064,0.38039657193408766 L 0.20384294391935398,0.3609819355967741 L 0.2086119328535583,0.3419430645491073 L 0.21522409349774277,0.32346331352698177 L 0.22361574713032917,0.3057206526348002 L 0.23370607753949113,0.2888859533960793 L 0.24539790932745284,0.27312134316727066 L 0.2585786437626908,0.25857864376269024 L 0.2731213431672712,0.24539790932745237 L 0.2888859533960799,0.23370607753949074 L 0.30572065263480086,0.2236157471303288 L 0.32346331352698243,0.21522409349774252 L 0.34194306454910794,0.2086119328535581 L 0.3609819355967747,0.20384294391935387 L 0.38039657193408827,0.2009630546655606 L 0.40000000000000036,0.2 L 0.41960342806591244,0.20096305466556066 L 0.43901806440322594,0.20384294391935398 L 0.45805693545089277,0.2086119328535583 L 0.47653668647301817,0.21522409349774274 L 0.49427934736519974,0.2236157471303291 L 0.5111140466039207,0.23370607753949107 L 0.5268786568327293,0.24539790932745276 L 0.5414213562373097,0.25857864376269063 L 0.5546020906725475,0.273121343167271 L 0.5662939224605091,0.2888859533960797 L 0.5763842528696711,0.3057206526348006 L 0.5847759065022574,0.32346331352698215 L 0.5913880671464418,0.3419430645491076 L 0.5961570560806462,0.3609819355967744 L 0.5990369453344394,0.38039657193408793 L 0.6000000000000001,0.4 z M -0.2,0.4 L -0.2,0.4000000000000017 L -0.20096305466556078,0.4196034280659137 L -0.2038429439193542,0.43901806440322716 L -0.20861193285355867,0.4580569354508939 L -0.21522409349774319,0.4765366864730193 L -0.2236157471303296,0.49427934736520074 L -0.23370607753949166,0.5111140466039215 L -0.24539790932745337,0.52687865683273 L -0.2585786437626913,0.5414213562373104 L -0.2731213431672717,0.5546020906725481 L -0.28888595339608036,0.5662939224605096 L -0.3057206526348013,0.5763842528696714 L -0.3234633135269828,0.5847759065022577 L -0.3419430645491083,0.591388067146442 L -0.36098193559677505,0.5961570560806463 L -0.38039657193408855,0.5990369453344395 L -0.4000000000000006,0.6000000000000001 L -0.41960342806591266,0.5990369453344393 L -0.4390180644032261,0.5961570560806461 L -0.4580569354508929,0.5913880671464418 L -0.4765366864730183,0.5847759065022573 L -0.49427934736519974,0.576384252869671 L -0.5111140466039206,0.566293922460509 L -0.5268786568327293,0.5546020906725474 L -0.5414213562373096,0.5414213562373096 L -0.5546020906725475,0.526878656832729 L -0.5662939224605091,0.5111140466039205 L -0.5763842528696711,0.49427934736519946 L -0.5847759065022574,0.4765366864730179 L -0.5913880671464419,0.4580569354508924 L -0.5961570560806462,0.43901806440322555 L -0.5990369453344394,0.41960342806591194 L -0.6000000000000001,0.3999999999999998 L -0.5990369453344394,0.38039657193408766 L -0.5961570560806461,0.3609819355967741 L -0.5913880671464418,0.3419430645491073 L -0.5847759065022573,0.32346331352698177 L -0.5763842528696709,0.3057206526348002 L -0.5662939224605089,0.2888859533960793 L -0.5546020906725472,0.27312134316727066 L -0.5414213562373092,0.25857864376269024 L -0.5268786568327288,0.24539790932745237 L -0.5111140466039201,0.23370607753949074 L -0.4942793473651992,0.2236157471303288 L -0.4765366864730176,0.21522409349774252 L -0.4580569354508921,0.2086119328535581 L -0.4390180644032253,0.20384294391935387 L -0.4196034280659118,0.2009630546655606 L -0.3999999999999997,0.2 L -0.3803965719340876,0.20096305466556066 L -0.3609819355967741,0.20384294391935398 L -0.3419430645491073,0.2086119328535583 L -0.3234633135269819,0.21522409349774274 L -0.3057206526348003,0.2236157471303291 L -0.2888859533960794,0.23370607753949107 L -0.27312134316727077,0.24539790932745276 L -0.25857864376269035,0.25857864376269063 L -0.24539790932745253,0.273121343167271 L -0.2337060775394909,0.2888859533960797 L -0.22361574713032895,0.3057206526348006 L -0.21522409349774263,0.32346331352698215 L -0.20861193285355822,0.3419430645491076 L -0.2038429439193539,0.3609819355967744 L -0.20096305466556064,0.38039657193408793 L -0.2,0.4 z\" /></g></svg>"
      ],
      "text/plain": [
       "<shapely.geometry.polygon.Polygon at 0x1632ba9c2c8>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "face = draw.shapely.geometry.Point(0, 0).buffer(1)\n",
    "eye = draw.shapely.geometry.Point(0, 0).buffer(0.2)\n",
    "eye_l = draw.translate(eye, -0.4, 0.4)\n",
    "eye_r = draw.translate(eye, 0.4, 0.4)\n",
    "\n",
    "smile = draw.shapely.geometry.Point(0, 0).buffer(0.8)\n",
    "cut_sq = draw.shapely.geometry.box(-1, -0.3, 1, 1)\n",
    "smile = draw.subtract(smile, cut_sq)\n",
    "face = draw.subtract(face, smile)\n",
    "face = draw.subtract(face, eye_r)\n",
    "face = draw.subtract(face, eye_l)\n",
    "face"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This differs from qgeometries which have `subtract=True`, as that specifically sets that geometry to be \"etched\" from the ground plane. The polygon face is composed of an exterior;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-1.08 -1.08 2.16 2.16\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,0.0)\"><polyline fill=\"none\" stroke=\"#66cc99\" stroke-width=\"0.0432\" points=\"1.0,0.0 0.9951847266721969,-0.0980171403295605 0.9807852804032305,-0.19509032201612808 0.9569403357322089,-0.2902846772544621 0.923879532511287,-0.3826834323650894 0.8819212643483553,-0.4713967368259972 0.8314696123025456,-0.5555702330196017 0.7730104533627374,-0.6343932841636449 0.7071067811865481,-0.7071067811865469 0.6343932841636462,-0.7730104533627363 0.5555702330196031,-0.8314696123025447 0.4713967368259986,-0.8819212643483545 0.38268343236509084,-0.9238795325112863 0.2902846772544636,-0.9569403357322085 0.19509032201612964,-0.9807852804032302 0.09801714032956209,-0.9951847266721967 1.6155445744325867e-15,-1.0 -0.09801714032955888,-0.995184726672197 -0.19509032201612647,-0.9807852804032308 -0.2902846772544605,-0.9569403357322095 -0.38268343236508784,-0.9238795325112875 -0.4713967368259957,-0.881921264348356 -0.5555702330196005,-0.8314696123025463 -0.6343932841636439,-0.7730104533627382 -0.7071067811865462,-0.7071067811865489 -0.7730104533627359,-0.6343932841636468 -0.8314696123025443,-0.5555702330196036 -0.8819212643483543,-0.47139673682599903 -0.9238795325112862,-0.3826834323650911 -0.9569403357322085,-0.29028467725446366 -0.9807852804032302,-0.19509032201612947 -0.9951847266721968,-0.09801714032956171 -1.0,-1.0106430996148606e-15 -0.9951847266721969,0.0980171403295597 -0.9807852804032307,0.1950903220161275 -0.956940335732209,0.2902846772544617 -0.923879532511287,0.3826834323650892 -0.8819212643483553,0.47139673682599725 -0.8314696123025455,0.555570233019602 -0.7730104533627371,0.6343932841636453 -0.7071067811865477,0.7071067811865475 -0.6343932841636459,0.7730104533627367 -0.555570233019603,0.8314696123025448 -0.4713967368259987,0.8819212643483545 -0.38268343236509117,0.9238795325112862 -0.2902846772544641,0.9569403357322084 -0.1950903220161304,0.98078528040323 -0.0980171403295631,0.9951847266721966 -2.848232278972479e-15,1.0 0.09801714032955743,0.9951847266721972 0.1950903220161248,0.9807852804032311 0.29028467725445867,0.9569403357322099 0.3826834323650859,0.9238795325112884 0.47139673682599365,0.8819212643483572 0.5555702330195982,0.8314696123025479 0.6343932841636415,0.7730104533627402 0.7071067811865436,0.7071067811865515 0.7730104533627332,0.63439328416365 0.8314696123025418,0.5555702330196074 0.8819212643483519,0.4713967368260034 0.9238795325112841,0.38268343236509617 0.9569403357322067,0.29028467725446927 0.980785280403229,0.1950903220161357 0.9951847266721962,0.09801714032956847 1.0,8.238535137130597e-15 1.0,0.0\" opacity=\"0.8\" /></g></svg>"
      ],
      "text/plain": [
       "<shapely.geometry.polygon.LinearRing at 0x1632bad6f48>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "face.exterior"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and interiors, such as;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-0.8006072042052136 -0.8593042373485343 1.6012144084104272 0.6186084746970687\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,-1.1)\"><polyline fill=\"none\" stroke=\"#66cc99\" stroke-width=\"0.03202428816820854\" points=\"0.7413029668566793,-0.3 -0.7413029668566793,-0.3 -0.739103626009029,-0.3061467458920729 -0.7055370114786834,-0.37711738946079926 -0.6651756898420356,-0.4444561864156829 -0.6184083626901887,-0.5075146273309175 -0.565685424949237,-0.5656854249492391 -0.5075146273309151,-0.6184083626901906 -0.4444561864156804,-0.6651756898420371 -0.3771173894607966,-0.7055370114786849 -0.3061467458920703,-0.73910362600903 -0.23222774180356842,-0.7655522685857676 -0.1560722576129012,-0.7846282243225846 -0.07841371226364711,-0.7961477813377577 1.2924356595460695e-15,-0.8 0.07841371226364968,-0.7961477813377574 0.15607225761290372,-0.7846282243225842 0.2322277418035709,-0.7655522685857669 0.3061467458920727,-0.7391036260090291 0.37711738946079887,-0.7055370114786836 0.44445618641568246,-0.6651756898420358 0.5075146273309169,-0.6184083626901891 0.5656854249492386,-0.5656854249492376 0.61840836269019,-0.507514627330916 0.6651756898420365,-0.4444561864156814 0.7055370114786843,-0.37711738946079776 0.7391036260090296,-0.3061467458920715 0.7413029668566793,-0.3\" opacity=\"0.8\" /></g></svg>"
      ],
      "text/plain": [
       "<shapely.geometry.polygon.LinearRing at 0x1632bad4d48>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "face.interiors[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A renderer must recognize the difference between these shapes, as the current QRenderers do. This allows for the component designer to generate complex shapes, without having to worry about how to add the qgeometries in any particular manner. This is also true with MultiPolygons."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-5.4 -5.4 10.8 10.8\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,0.0)\"><g><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.21600000000000003\" opacity=\"0.6\" d=\"M 5.0,-0.5 L 5.0,-5.0 L -5.0,-5.0 L -5.0,-0.5 L 5.0,-0.5 z\" /><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.21600000000000003\" opacity=\"0.6\" d=\"M -5.0,0.5 L -5.0,5.0 L 5.0,5.0 L 5.0,0.5 L -5.0,0.5 z\" /></g></g></svg>"
      ],
      "text/plain": [
       "<shapely.geometry.multipolygon.MultiPolygon at 0x1632b4ca688>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "big_square = draw.rectangle(10,10,0,0)\n",
    "cut_rectangle = draw.rectangle(12,1,0,0)\n",
    "multi_poly = draw.subtract(big_square, cut_rectangle)\n",
    "multi_poly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "shapely.geometry.multipolygon.MultiPolygon"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(multi_poly)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The MultiPolygon can still just be passed to add_qgeometry as one would with a regular polygon. It is broken up behind the scenes so two separate rectangles (with the appropriate coordinates) are added to the poly qgeometry table. This is handled by the add_qgeometry method of QGeometryTables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "?metal.qgeometries.QGeometryTables.add_qgeometry"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This method also handles rounding of coordinates to try and avoid any numerical errors. It is called by `metal.qlibrary.core.QComponent.add_qgeometry` and should not be called directly."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## QComponent Inheritance\n",
    "\n",
    "As is the case with python classes, one can extend a given component by creating a qcomponent which inherits said class, making it a parent/child relationship. While python does support multiple inheritances, Metal may run into some bugs, so it is best to keep inheritances as single paths of heritage.\n",
    "\n",
    "A good example is `TransmonPocketCL`, which adds a \"charge line\" the a \"standard\" `TransmonPocket`. As can be seen in the below code, none of the charge islands or other connection pads are present, but will still be generated via the `super().make()` line in the `make()` method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from qiskit_metal import draw, Dict\n",
    "from qiskit_metal.qlibrary.qubits.transmon_pocket import TransmonPocket\n",
    "\n",
    "\n",
    "class TransmonPocketCL(TransmonPocket):  # pylint: disable=invalid-name\n",
    "    \"\"\"\n",
    "    The base `TransmonPocketCL` class\n",
    "\n",
    "    Inherits `TransmonPocket` class\n",
    "\n",
    "    Description:\n",
    "        Create a standard pocket transmon qubit for a ground plane,\n",
    "        with two pads connected by a junction (see drawing below).\n",
    "\n",
    "        Connector lines can be added using the `connection_pads`\n",
    "        dictionary. Each connector line has a name and a list of default\n",
    "        properties.\n",
    "\n",
    "        This is a child of TransmonPocket, see TransmonPocket for the variables and\n",
    "        description of that class.\n",
    "\n",
    "    ::\n",
    "\n",
    "        _________________\n",
    "        |               |\n",
    "        |_______________|       ^\n",
    "        ________x________       |  N\n",
    "        |               |       |\n",
    "        |_______________|\n",
    "\n",
    "\n",
    "    .. image::\n",
    "        Component_Qubit_Transmon_Pocket_CL.png\n",
    "\n",
    "\n",
    "    Charge Line:\n",
    "        * make_CL (bool): If a chargeline should be included.\n",
    "        * cl_gap (string): The cpw dielectric gap of the charge line.\n",
    "        * cl_width (string): The cpw width of the charge line.\n",
    "        * cl_length (string):  The length of the charge line 'arm' coupling the the qubit pocket.\n",
    "          Measured from the base of the 90 degree bend.\n",
    "        * cl_ground_gap (string):  How much ground is present between the charge line and the\n",
    "          qubit pocket.\n",
    "        * cl_pocket_edge (string): What side of the pocket the charge line is.\n",
    "          -180 to +180 from the 'west edge', will round to the nearest 90.\n",
    "        * cl_off_center (string):  Distance from the center axis the qubit pocket is referenced to\n",
    "    \"\"\"\n",
    "    component_metadata = Dict(short_name='Q', _qgeometry_table_poly='True')\n",
    "    \"\"\"Component metadata\"\"\"\n",
    "\n",
    "    default_options = Dict(\n",
    "        make_CL=True,\n",
    "        cl_gap='6um',  # the cpw dielectric gap of the charge line\n",
    "        cl_width='10um',  # the cpw trace width of the charge line\n",
    "        # the length of the charge line 'arm' coupling the the qubit pocket.\n",
    "        cl_length='20um',\n",
    "        # Measured from the base of the 90 degree bend\n",
    "        cl_ground_gap=\n",
    "        '6um',  # how much ground between the charge line and the qubit pocket\n",
    "        # -180 to +180 from the 'left edge', will round to the nearest 90.\n",
    "        cl_pocket_edge='0',\n",
    "        cl_off_center=\n",
    "        '100um',  # distance from the center axis the qubit pocket is built on\n",
    "    )\n",
    "    \"\"\"Default drawing options\"\"\"\n",
    "\n",
    "    def make(self):\n",
    "        \"\"\"Define the way the options are turned into QGeometry.\"\"\"\n",
    "        super().make()\n",
    "\n",
    "        if self.options.make_CL == True:\n",
    "            self.make_charge_line()\n",
    "\n",
    "\n",
    "#####################################################################\n",
    "\n",
    "    def make_charge_line(self):\n",
    "        \"\"\"Creates the charge line if the user has charge line option to TRUE\n",
    "        \"\"\"\n",
    "\n",
    "        # Grab option values\n",
    "        name = 'Charge_Line'\n",
    "\n",
    "        p = self.p\n",
    "\n",
    "        cl_arm = draw.box(0, 0, -p.cl_width, p.cl_length)\n",
    "        cl_cpw = draw.box(0, 0, -8 * p.cl_width, p.cl_width)\n",
    "        cl_metal = draw.unary_union([cl_arm, cl_cpw])\n",
    "\n",
    "        cl_etcher = draw.buffer(cl_metal, p.cl_gap)\n",
    "\n",
    "        port_line = draw.LineString([(-8 * p.cl_width, 0),\n",
    "                                     (-8 * p.cl_width, p.cl_width)])\n",
    "\n",
    "        polys = [cl_metal, cl_etcher, port_line]\n",
    "\n",
    "        # Move the charge line to the side user requested\n",
    "        cl_rotate = 0\n",
    "        if (abs(p.cl_pocket_edge) > 135) or (abs(p.cl_pocket_edge) < 45):\n",
    "            polys = draw.translate(\n",
    "                polys, -(p.pocket_width / 2 + p.cl_ground_gap + p.cl_gap),\n",
    "                -(p.pad_gap + p.pad_height) / 2)\n",
    "            if (abs(p.cl_pocket_edge) > 135):\n",
    "                p.cl_rotate = 180\n",
    "        else:\n",
    "            polys = draw.translate(\n",
    "                polys, -(p.pocket_height / 2 + p.cl_groundGap + p.cl_gap),\n",
    "                -(p.pad_width) / 2)\n",
    "            cl_rotate = 90\n",
    "            if (p.cl_pocket_edge < 0):\n",
    "                cl_rotate = -90\n",
    "\n",
    "        # Rotate it to the pockets orientation\n",
    "        polys = draw.rotate(polys, p.orientation + cl_rotate, origin=(0, 0))\n",
    "\n",
    "        # Move to the final position\n",
    "        polys = draw.translate(polys, p.pos_x, p.pos_y)\n",
    "\n",
    "        [cl_metal, cl_etcher, port_line] = polys\n",
    "\n",
    "        # Generating pins\n",
    "        points = list(draw.shapely.geometry.shape(port_line).coords)\n",
    "        self.add_pin(name, points, p.cl_width)  # TODO: chip\n",
    "\n",
    "        # Adding to element table\n",
    "        self.add_qgeometry('poly', dict(cl_metal=cl_metal))\n",
    "        self.add_qgeometry('poly', dict(cl_etcher=cl_etcher), subtract=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see this is the case by generating a TransmonPocketCL in the GUI."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "gui = metal.MetalGUI(design)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "tags": [
     "nbsphinx-thumbnail"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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t7e346VSIn6rtLa2LriXSlWJlwp+2ZZzHOf555+PRqPVSL3vfe97CSH02LMunM9dbNvOZ7NPPnSvb9/i9Yqbba9UoVDo6+tbsWJFldqzEDmOs3nz5tWrV+MXcTnTNLdv337UUUfVuyGHEM75a6+9hpfKBOIn6Oijj653Qw4heKlMCb9sJxMvlVWrVlUp3t14250LoFdm5i+IH/zgBxs3bvzMZz5zxhlnlA4++eSTN998czgcjkaj11xzTXXaeOhKJpO33nrrxo0bb7755vKXUV9f30033VQoFN75zndedNFFjfYG4je/+c2GDRs0TfviF79YeoE9++yzN954Y0tLSygU+vrXv9443eZPPPHE//zP/1BKP/axj61Zs2bNmjWc8xdeeOHuu++WJOkDH/jAKaecUu821pplWQ888MCGDRuampo++clP9vT0rFmzJp1Of/WrXyWEMMauuuqqVatW1buZtXb//ffff//9a9as+cIXvkApFS+VV1555ac//anjOO9973tPP/30RvsT/tJLL/3sZz8zDONb3/qWz+eTJGnNmjUPPfTQT37yk2g0euSRR1555ZUznB1x2HjuuefuvfdewzCOOOKIK6+8kjG2Zs0aQsjmzZvvuusuwzAuuuiis88+u4J/dw6rX9bvfve7s9ls+YachJBMJnPkkUdeccUVjVkM1OPxvO9979u6dWtpry9CCOf8rrvuOuGEE0488cR//dd/PeaYY7q7u+vYyBpLJpP33nvvtddeu3379ltvvfUb3/iGSC25XG7p0qVXXXWV3+9vnD5zzvntt9/+t3/7t6Zp3nLLLTfddJOiKLqu33zzzV/4wheKxeLtt99+8sknN9rfp8HBwfvuu+973/vehg0bfvWrX33lK18hhNi2PT4+ft111wUCgSmroB72jjnmGMbYxo0bS0ccx7nllls+9rGPeTye733ve6eddlqjvVS6u7s/+9nP/t3f/V35BP9UKnXiiSd+8IMfbGpqqsYEkUNce3v75z73OVmWv/zlL7/nPe9pa2sTx//rv/7r4osv7urquu6669avX+/xeCr1jIfVe/EVK1YEAoEJB0OhUCaTuf7667/5zW+KaYMNRdO0FStWiILWJfl8/s033zznnHMWLVrU09Oza9euejWvLrZv397d3b18+fIzzjhj586dpW0Ig8Ggruvf//73v/GNb5Qn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ODw0UBoY64bmVDNfyOHwi98xYU9frRJij27YNsS8oDeKy0M7R8j0QvtEt1oH057793Q//VIry7IDzz7hr7shNPK2a3e98ML0tXfcPDq84frt1b/96iPDQwMdITm5X0y6UEdjF2zzmgcW9j5rJjbpl56e46u27t6z3jz+13/xnenKcHdNo1Nx3LFDyS0fvGz/v3/l25Nd999xycPf+56uDd1607t6T39Gg/Ul13+wY/7J/cdFnMy/fLRd4UmjuuWaIVVov417dvQiWlt3esrNhm07um3ri9/ZOzw0EHnhZVdfNTq2+fYrVn3rnx5iQ/3VYGCgG/KZZlqP//35F3RY6+vq2FK2LbJp06ogtOX5YPXlq+mstmOrRyvZzL7midt5++XvffeFL/ztF//+qWevvP2WNcMT771xq7Gd2y6qBJT+6Ilj933ibpanh558auu7741ffuKH33vsB//+jf/9l3/3UgHrLrnxph3Dduahes+7f/mud/XhY8dg841j3hPTEnzKc54Zyiy+9v33HHn6K1/7Yev2O678wQ+eOHFC+T/84zei/v7uWhCt2nH92rHL339Devjhl+bocFfF6+5BpK1tyxx89psvF8P9PXhwQy+0wt6JVWv8lw40br/z4ql90ycHp5HNrNt6bdA6tO9HT9rNe/iPv18X5rx33zWRPv9Xn/vnA0FPX3fNo3j3RRd6Z/hMznEcx3knLP+y36B39N67bvEOP/znX33ip3/3LQg7+u7+wAfY0R987quP8pWwrfzQxks/9N6LH/unf4jHr7665/j/+Nuv1fM3/tar0VLn+3/lfvLs1/7mO8/JM/wOZr3d5XajydWZV3X4aTZcevN7L19HAfLJvf/t776Vv1b9ibMB4aFf/Z27ewFAZl//8hce3Vd/y031DG+/994rKwAQT//l//vSsXoOABNXvPfe3as+/7/+bPMdn6lNfutzX3qMn3bsrp6eojGXvWGpA8dxHOeccxlMjuM4juOsYOc0g8lUuWYawMrhRjqWvsZfuEERXzDdPn9WvV6yiCfytbF5rf6aSKjoTJcyqN5WsrG9jH9iW19kGxqL8x66O25tbi1Ls3Kwka5LzryfJpCq/MpBkMNtUTnTSRzV30rXpq/xBlXZxjne+WYWi3g8X5uYZX0sY6IiG01e/bplMts0K98gFclxHMf5uXUWChdERTHS1h1c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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "width": 500
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "my_transmon_cl = TransmonPocketCL(design,'my_transmon_cl',options=dict(connection_pads=dict(a=dict(),b=dict(loc_W=-1))))\n",
    "gui.rebuild()\n",
    "gui.autoscale()\n",
    "gui.screenshot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'pos_x': '0um',\n",
       " 'pos_y': '0um',\n",
       " 'connection_pads': {'a': {'pad_gap': '15um',\n",
       "   'pad_width': '125um',\n",
       "   'pad_height': '30um',\n",
       "   'pad_cpw_shift': '5um',\n",
       "   'pad_cpw_extent': '25um',\n",
       "   'cpw_width': 'cpw_width',\n",
       "   'cpw_gap': 'cpw_gap',\n",
       "   'cpw_extend': '100um',\n",
       "   'pocket_extent': '5um',\n",
       "   'pocket_rise': '65um',\n",
       "   'loc_W': '+1',\n",
       "   'loc_H': '+1'},\n",
       "  'b': {'pad_gap': '15um',\n",
       "   'pad_width': '125um',\n",
       "   'pad_height': '30um',\n",
       "   'pad_cpw_shift': '5um',\n",
       "   'pad_cpw_extent': '25um',\n",
       "   'cpw_width': 'cpw_width',\n",
       "   'cpw_gap': 'cpw_gap',\n",
       "   'cpw_extend': '100um',\n",
       "   'pocket_extent': '5um',\n",
       "   'pocket_rise': '65um',\n",
       "   'loc_W': -1,\n",
       "   'loc_H': '+1'}},\n",
       " 'chip': 'main',\n",
       " 'pad_gap': '30um',\n",
       " 'inductor_width': '20um',\n",
       " 'pad_width': '455um',\n",
       " 'pad_height': '90um',\n",
       " 'pocket_width': '650um',\n",
       " 'pocket_height': '650um',\n",
       " 'orientation': '0',\n",
       " 'make_CL': True,\n",
       " 'cl_gap': '6um',\n",
       " 'cl_width': '10um',\n",
       " 'cl_length': '20um',\n",
       " 'cl_ground_gap': '6um',\n",
       " 'cl_pocket_edge': '0',\n",
       " 'cl_off_center': '100um',\n",
       " 'hfss_wire_bonds': False,\n",
       " 'q3d_wire_bonds': False,\n",
       " 'hfss_inductance': '10nH',\n",
       " 'hfss_capacitance': 0,\n",
       " 'hfss_resistance': 0,\n",
       " 'hfss_mesh_kw_jj': 7e-06,\n",
       " 'q3d_inductance': '10nH',\n",
       " 'q3d_capacitance': 0,\n",
       " 'q3d_resistance': 0,\n",
       " 'q3d_mesh_kw_jj': 7e-06,\n",
       " 'gds_cell_name': 'my_other_junction'}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_transmon_cl.options"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see that `my_transmon_cl` inherited the appropriate options from `TransmonPocket`, and even got the junction renderer options since its parent class does declare `_qgeometry_table_junction='True'`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gui.main_window.close()"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
